document.addEventListener('DOMContentLoaded', function () {
  const scrapeBtn = document.getElementById('scrapeBtn');
  const downloadBtn = document.getElementById('downloadBtn');
  const closeBtn = document.getElementById('closeBtn');
  const statusDiv = document.getElementById('status');
  let menuData = null;
  let isProcessing = false;

  // 关闭按钮点击事件
  closeBtn.addEventListener('click', function () {
    window.close();
  });

  // 抓取按钮点击事件
  scrapeBtn.addEventListener('click', function () {
    if (isProcessing) {
      return; // 避免重复点击
    }

    isProcessing = true;
    statusDiv.textContent = '正在抓取数据...';
    downloadBtn.style.display = 'none';
    scrapeBtn.disabled = true;

    console.log('点击了抓取按钮，准备发送消息到内容脚本');

    // 获取当前标签页
    chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
      if (!tabs || tabs.length === 0) {
        showError('无法获取当前标签页');
        return;
      }

      const tab = tabs[0];

      // 检查是否在正确的网站上 - 现在支持本地测试页面和实际网站
      if (
        !tab.url.includes('imperialdragonco.com/order') &&
        !tab.url.includes('test.html') &&
        !tab.url.includes('localhost') &&
        !tab.url.includes('127.0.0.1')
      ) {
        showError('请在Imperial Dragon的订餐页面或测试页面上使用此插件');
        return;
      }

      // 显示正在处理的状态
      statusDiv.textContent = '正在抓取数据，请稍等（不要操作页面）...';

      console.log('发送抓取请求到标签页:', tab.id);

      // 保持弹出窗口打开状态
      keepPopupOpen();

      // 执行内容脚本
      chrome.tabs.sendMessage(
        tab.id,
        { action: 'scrapeMenu' },
        function (response) {
          // 检查是否有错误
          if (chrome.runtime.lastError) {
            showError(chrome.runtime.lastError.message);
            console.error('发送消息时出错:', chrome.runtime.lastError);

            // 可能是内容脚本未加载，尝试注入内容脚本
            chrome.scripting.executeScript(
              {
                target: { tabId: tab.id },
                files: ['content.js'],
              },
              function () {
                if (chrome.runtime.lastError) {
                  showError(
                    '无法注入内容脚本: ' + chrome.runtime.lastError.message
                  );
                } else {
                  statusDiv.textContent = '内容脚本已注入，请点击抓取按钮重试';
                  scrapeBtn.disabled = false;
                  isProcessing = false;
                }
              }
            );
            return;
          }

          console.log('收到内容脚本响应:', response);

          if (!response) {
            showError('未收到内容脚本的响应');
            return;
          }

          if (response.success) {
            menuData = response.data;

            // 检查数据是否为空
            if (
              !menuData ||
              (menuData.dishes_series.length === 0 &&
                menuData.dishes_list.length === 0)
            ) {
              statusDiv.textContent =
                '警告：抓取的数据为空，请检查网页结构是否变化';
              console.warn('抓取的数据为空:', menuData);
            } else {
              statusDiv.textContent =
                '数据抓取成功！共获取到 ' +
                menuData.dishes_series.length +
                ' 个菜系和 ' +
                menuData.dishes_list.length +
                ' 个菜品。点击"下载数据"按钮保存。';
              console.log('抓取成功，数据:', menuData);
              downloadBtn.style.display = 'block';
            }
          } else {
            showError(response.error || '未知错误');
          }

          scrapeBtn.disabled = false;
          isProcessing = false;
        }
      );
    });
  });

  // 下载按钮点击事件
  downloadBtn.addEventListener('click', function () {
    if (!menuData) {
      showError('没有可下载的数据');
      return;
    }

    console.log('准备下载数据');
    statusDiv.textContent = '正在准备下载...';
    downloadBtn.disabled = true;

    try {
      // 创建下载链接
      const dataStr = JSON.stringify(menuData, null, 2);
      const dataBlob = new Blob([dataStr], { type: 'application/json' });

      // 使用当前日期时间作为文件名的一部分
      const now = new Date();
      const timestamp = now
        .toISOString()
        .replace(/[:.]/g, '-')
        .replace('T', '_')
        .slice(0, 19);
      const filename = `imperial_dragon_menu_${timestamp}.json`;

      // 尝试使用 chrome.downloads API
      if (chrome && chrome.downloads && chrome.downloads.download) {
        const url = URL.createObjectURL(dataBlob);

        chrome.downloads.download(
          {
            url: url,
            filename: filename,
            saveAs: true, // 允许用户选择保存位置
          },
          function (downloadId) {
            if (chrome.runtime.lastError) {
              console.error('下载API错误:', chrome.runtime.lastError);
              fallbackDownload(dataBlob, filename);
            } else {
              statusDiv.textContent = '数据已开始下载！';
              // 清理URL对象
              setTimeout(function () {
                URL.revokeObjectURL(url);
              }, 1000);
            }
            downloadBtn.disabled = false;
          }
        );
      } else {
        // 回退到传统下载方法
        fallbackDownload(dataBlob, filename);
        downloadBtn.disabled = false;
      }
    } catch (error) {
      showError('下载失败：' + error.message);
      downloadBtn.disabled = false;
    }
  });

  // 传统下载方法
  function fallbackDownload(dataBlob, filename) {
    try {
      const url = URL.createObjectURL(dataBlob);
      const a = document.createElement('a');
      a.href = url;
      a.download = filename;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);

      // 清理URL对象
      setTimeout(function () {
        URL.revokeObjectURL(url);
      }, 1000);

      statusDiv.textContent = '数据已下载完成！';
      console.log('数据下载完成');
    } catch (error) {
      showError('下载失败：' + error.message);
    }
  }

  // 显示错误信息
  function showError(message) {
    statusDiv.textContent = '错误：' + message;
    console.error(message);
    scrapeBtn.disabled = false;
    isProcessing = false;
  }

  // 保持弹出窗口打开
  function keepPopupOpen() {
    // 创建一个隐藏的音频元素，播放无声音频来保持弹窗活跃
    const silentAudio = document.createElement('audio');
    silentAudio.src =
      'data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=';
    silentAudio.loop = true;
    silentAudio.volume = 0.01; // 几乎无声
    document.body.appendChild(silentAudio);
    silentAudio.play().catch((e) => console.log('无法播放静音音频:', e));
  }

  // 在加载时检查当前标签是否是正确的网站
  chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
    if (tabs && tabs.length > 0) {
      const tab = tabs[0];
      if (
        !tab.url.includes('imperialdragonco.com/order') &&
        !tab.url.includes('test.html') &&
        !tab.url.includes('localhost') &&
        !tab.url.includes('127.0.0.1')
      ) {
        statusDiv.textContent =
          '请在Imperial Dragon的订餐页面或测试页面上使用此插件';
        scrapeBtn.disabled = true;
        downloadBtn.style.display = 'none';
      } else {
        statusDiv.textContent = '点击"抓取菜单数据"按钮开始';
        scrapeBtn.disabled = false;
        downloadBtn.style.display = 'none';
      }
    }
  });
});
